﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace FrbaCommerce.Abm_Rol
{
    public partial class ListadoRoles : Form
    {
        bool modo;
        public ListadoRoles(bool modo)
        {
            InitializeComponent();            
            this.modo = modo;
            this.CargarRoles();
        }
        private void ListadoRoles_Load(object sender, EventArgs e)
        {
            this.dgvRoles.SelectionChanged += new EventHandler(dgvRoles_SelectionChanged);
            if (modo)
            {
                btnSeleccionar.Text = "Modificar";
            }
            else
            {
                btnSeleccionar.Text = "Baja";
            }
        }


        void dgvRoles_SelectionChanged(object sender, EventArgs e)
        {
            if (this.dgvRoles.SelectedCells.Count > 0)
            {
                Rol rol = (Rol)this.dgvRoles.SelectedCells[0].OwningRow.DataBoundItem;
                if (rol.habilitado)
                {
                    if (!modo)
                    {
                        this.btnSeleccionar.Text = "Eliminar"; 
                    }                   
                }
                else
                {
                    if (!modo)
                    {
                        this.btnSeleccionar.Text = "Activar";
                    }                        
                }
            }
        }
       
        private void btnBuscar_Click(object sender, EventArgs e)
        {
            Rol rol = new Rol();
            this.dgvRoles.DataSource = rol.BuscarRoles(this.cmbRoles.Text);
        }        

        private void btnSeleccionar_Click(object sender, EventArgs e)
        {           
            if (this.dgvRoles.SelectedCells.Count > 0)
            {
                Rol rol = (Rol)this.dgvRoles.SelectedCells[0].OwningRow.DataBoundItem;
                if (modo)
                {
                    if (rol.nombre == "Cliente" || rol.nombre == "Empresa")
                    {
                        AbmRol modificarRol = new AbmRol(rol, true);
                        modificarRol.FormClosed += new FormClosedEventHandler(modificarRol_FormClosed);
                        modificarRol.ShowDialog();
                    }
                    else
                    {
                        AbmRol modificarRol = new AbmRol(rol, false);
                        modificarRol.FormClosed += new FormClosedEventHandler(modificarRol_FormClosed);
                        modificarRol.ShowDialog();
                    }                   
                    
                }
                else
                {                   
                    if (rol.habilitado && MessageBox.Show("¿Está seguro de que desea dar de baja este Rol?\n", "Advertencia", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.No)
                    {
                        return;
                    }
                    rol.habilitado = !rol.habilitado;
                    rol.Baja(rol.id, rol.habilitado);                    
                    this.CargarRoles(); 
                }
            }
            else
            {
                MessageBox.Show("Seleccione un Rol para modificar.\n", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }

        private void CargarRoles()
        {
            Rol r = new Rol();
            r.CargarComboRoles(cmbRoles);
        }

        void modificarRol_FormClosed(object sender, FormClosedEventArgs e)
        {
            this.cmbRoles.SelectedItem = null; 
            this.dgvRoles.DataSource = null;                    
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void cmbRoles_SelectedIndexChanged(object sender, EventArgs e)
        {
            Rol rol = new Rol();
            this.dgvRoles.DataSource = rol.BuscarRoles(this.cmbRoles.Text);
        }
    }
}
